package com.rc.evcharger.common.enums.yl;

/**
 * Create by Yang on 2021/7/30
 * <p>
 * 告警编码定义（CMD=104 最高告警码字段）
 */
public enum YlWarnCode104Enum {

    WARN_CODE_0(0, "无告警"),
    WARN_CODE_1(1, "绝缘检测异常"),
    WARN_CODE_2(2, "预留"),
    WARN_CODE_3(3, "紧急停机"),
    WARN_CODE_4(4, "预留"),
    WARN_CODE_5(5, "直流输出过压"),
    WARN_CODE_6(6, "直流输出欠压"),
    WARN_CODE_7(7, "预留"),
    WARN_CODE_8(8, "直流输出断路U1 板采样模块输出端电压异常,需要检测系统接线"),
    WARN_CODE_9(9, "环境温度过高 群充模块过温"),
    WARN_CODE_10(10, "预留"),
    WARN_CODE_11(11, "预留"),
    WARN_CODE_12(12, "预留"),
    WARN_CODE_13(13, "直流输出反接"),
    WARN_CODE_14(14, "预留"),
    WARN_CODE_15(15, "预留"),
    WARN_CODE_16(16, "模块类型不一致我司有 750V、500V 和恒功率等模块类型"),
    WARN_CODE_17(17, "熔断器故障"),
    WARN_CODE_18(18, "直流接触器异常 交流接触器异常/直流接触器异常"),
    WARN_CODE_19(19, "模块故障"),
    WARN_CODE_20(20, "模块 CAN 通信异常"),
    WARN_CODE_21(21, "保留"),
    WARN_CODE_22(22, "交流输入电压过压"),
    WARN_CODE_23(23, "交流输入电压欠压24 交流输入频率过频"),
    WARN_CODE_25(25, "交流输入频率欠频"),
    WARN_CODE_26(26, "保留"),
    WARN_CODE_27(27, "防雷器故障"),
    WARN_CODE_28(28, "保留"),
    WARN_CODE_29(29, "交流 AC 输入 A 相缺相"),
    WARN_CODE_30(30, "交流 AC 输入 B 相缺相"),
    WARN_CODE_31(31, "交流 AC 输入 C 相缺相"),
    WARN_CODE_32(32, "直流输出短路"),
    WARN_CODE_33(33, "充电枪锁故障"),
    WARN_CODE_34(34, "低压辅源异常"),
    WARN_CODE_35(35, "充电枪温度过高"),
    WARN_CODE_36(36, "采集器代码错误"),
    WARN_CODE_40(40, "保留"),
    WARN_CODE_1000(1000, "控制板通讯故障"),
    WARN_CODE_1001(1001, "采集板通讯故障"),
    WARN_CODE_1002(1002, "电表通讯异常"),
    WARN_CODE_1003(1003, "与集中器通信中断 特定项目才有"),
    WARN_CODE_1004(1004, "后台通信中断"),
    WARN_CODE_1005(1005, "保留"),
    WARN_CODE_1006(1006, "读卡器故障"),
    WARN_CODE_1007(1007, "电表电量为 0"),
    WARN_CODE_2001(2001, "紧急停机故障"),
    WARN_CODE_2002(2002, "绝缘故障"),
    WARN_CODE_2003(2003, "直流过压"),
    WARN_CODE_2004(2004, "直流欠压"),
    WARN_CODE_2005(2005, "软启失败"),
    WARN_CODE_2006(2006, "输出反接故障2007 接触器异常"),
    WARN_CODE_2008(2008, "模块故障"),
    WARN_CODE_2009(2009, "电网电压高"),
    WARN_CODE_2010(2010, "电网电压低"),
    WARN_CODE_2011(2011, "电网频率高"),
    WARN_CODE_2012(2012, "电网频率低"),
    WARN_CODE_2013(2013, "模块通信异常"),
    WARN_CODE_2014(2014, "模块类型不一致"),
    WARN_CODE_2015(2015, "充电机系统掉电"),
    WARN_CODE_2016(2016, "直流输出断路 接触器没正常闭合 或熔断丝损坏"),
    WARN_CODE_2017(2017, "进风口过温保护"),
    WARN_CODE_2018(2018, "进风口低温保护"),
    WARN_CODE_2019(2019, "出风口过温保护"),
    WARN_CODE_2020(2020, "群充模块过温"),
    WARN_CODE_2021(2021, "防雷故障"),
    WARN_CODE_2022(2022, "交流接触器异常"),
    WARN_CODE_2023(2023, "充电枪头过温"),
    WARN_CODE_2024(2024, "直流输出过流"),
    WARN_CODE_2025(2025, "充电枪锁异常"),
    WARN_CODE_2026(2026, "快充段,此枪无效"),
    WARN_CODE_2027(2027, "快充段，此枪无效 门禁保护"),
    WARN_CODE_2028(2028, "门禁保护 CAN3 通信错误（扩展板）"),
    WARN_CODE_2029(2029, "CAN3 通信错误（扩展板） 群充模块通信超时"),
    WARN_CODE_2030(2030, "运行剩余天数无效"),
    WARN_CODE_2031(2031, "控制导引故障"),
    WARN_CODE_2038(2038, "电网电压高，告警不停机"),
    WARN_CODE_2039(2039, "电网电压低，告警不停机"),
    WARN_CODE_2040(2040, "绝缘异常"),
    WARN_CODE_2041(2041, "输出短路2042 模块过温"),
    WARN_CODE_2043(2043, "模块异常"),

    //100000 以上告警为交流桩告警

    WARN_CODE_100001(100001, "迪文通信告警"),
    WARN_CODE_100002(100002, "读卡器通信告警"),
    WARN_CODE_100003(100003, "防雷器故障"),
    WARN_CODE_100004(100004, "主开关及熔断器故障"),
    WARN_CODE_100005(100005, "紧急停机故障"),
    WARN_CODE_100032(100032, "电表 1 通信告警"),
    WARN_CODE_100033(100033, "电表 2 通信告警"),
    WARN_CODE_100034(100034, "电表 3 通信告警"),
    WARN_CODE_100035(100035, "电表 4 通信告警"),
    WARN_CODE_100036(100036, "电表 5 通信告警"),
    WARN_CODE_100037(100037, "电表 6 通信告警"),
    WARN_CODE_100038(100038, "电表 7 通信告警"),
    WARN_CODE_100039(100039, "电表 8 通信告警"),
    WARN_CODE_100040(100040, "电表 9 通信告警"),
    WARN_CODE_100041(100041, "电表 10 通信告警"),
    WARN_CODE_100042(100042, "电表 11 通信告警"),
    WARN_CODE_100043(100043, "电表 12 通信告警"),
    WARN_CODE_100044(100044, "电表 13 通信告警"),
    WARN_CODE_100045(100045, "电表 14 通信告警"),
    WARN_CODE_100046(100046, "电表 15 通信告警"),
    WARN_CODE_100047(100047, "电表 16 通信告警"),
    WARN_CODE_100065(100065, "过压告警"),
    WARN_CODE_100066(100066, "充电欠压告警"),
    WARN_CODE_100067(100067, "过流告警100068 继电器故障"),
    WARN_CODE_100076(100076, "过温告警"),
    WARN_CODE_100077(100077, "输入欠压告警");


    private int code;

    private String msg;

    YlWarnCode104Enum(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }


    /**
     * 解析code
     *
     * @param code
     * @return
     */
    public static String getWarnCode104(int code) {
//        Integer intCode = Integer.parseInt(code, 16);
        Class<YlWarnCode104Enum> enumClass = YlWarnCode104Enum.class;
        for (YlWarnCode104Enum ylWarnCode104Enum : enumClass.getEnumConstants()) {
            if (code == ylWarnCode104Enum.getCode()) {
                return ylWarnCode104Enum.getMsg();
            }
        }
        return "该停止方式未知:" + code;

    }


    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}
